#pragma once
#include "IRule.h"

class Node;

class Rules : public IRule
{
    ScannerV0* scanner;
    Token* t;
    bool lastToken;

public:
    Rules();
    virtual ~Rules();
    
    virtual void setScanner(ScannerV0* scanner);
    virtual void next_token();
    virtual TType token_type();

    virtual void error(const char * const errorDescription, Token* token = NULL);
    ParseTree* PROG(); 
    Node* DECLS(); 
    Node* DECL(); 
    Node* ARRAY(); 
    Node* STATEMENTS(); 
    Node* STATEMENT(); 
    Node* EXP(); 
    Node* EXP2(); 
    Node* INDEX(); 
    Node* OP_EXP(); 
    Node* OP();
};
